package com.zany.util.xml;

import java.util.Map;
import java.util.List;
import org.jdom.*;

import com.zany.util.ZanyException;


public interface XmlPkg {
    /**
     * 把经过Map打包的私有数据解开加入到xml文档中去
     * @param ppi HashMap 报文私有部分数据
     * @throws HsException
     */
    public void setPkgItem(Map ppi) throws ZanyException;

      /**
     * 把Map结构的数据打包到Xml包中去.
     * @param prvKey String :打包的Xml节点名
     * @param prvMap HashMap :打包的Xml节点数据
     * @return Element: Xml结点Element
     */
    public Element commPak(String prvKey, Map prvMap);

     /**
     *  xml文档转化为字符串
     * @param xmlDoc Document  xml文档
     * @return String 转换后的字符串
     * @throws ZanyException
     */
    public String xml2String(Document xmlDoc) throws ZanyException;
    /**
     * 得到报文字串
     * @return String
     * @throws ZanyException
     */
    public String getPkgString() throws ZanyException ;

    /*
     * 根据节点路径得到节点元素
     * @param dictPath 节点路径 例如："/pub/aaa" 注意不含根节点名(root)
     * @return Element 节点元素
     * @throws ZanyException
     */
    public Element getNode(String dictPath) throws ZanyException;

    /*
     * 根据节点元素得节点
     * @param ele 节点元素
     * @return 字符串
     */
    public String getNodeText(Element ele);

    /*
     * 根据dictPath路径获得节点
     * @param dictPath 节点路径 例如："/pub/aaa" 注意不含根节点名(root)
     * @return String 节点的字符串内容
     * @throws ZanyException
     */
    public String getNodeText(String dictPath) throws ZanyException;
    /*
  * 根据detailName节点获取该节点下的所有记录集，
  * 格式如：<root><respcode>响应码</respcode>....<datalist><data1><userid>用户ID</userid><username>用户名</username><orgid>机构号</orgid>..</data1><data2>..</data2>
  * 。。</datalist></root>,如果格式为另外，则可以子类的方式重写该方法。
  * @param detailName 节点名称 例如："datalist" 注意不含根节点名(root)
  * @return List 结果集
  * @throws ZanyException
  */
  public List getNodeList(String detailName) throws ZanyException ;


    /*
     * 根据dictPath路径插入节点值
     * @param dictPath 节点路径 例如："/pub/aaa" 注意不含根节点名(root)
     * @param eleValue 节点元素名
     * @throws ZanyException
     */
    public void setNodeText(String dictPath, String eleValue) throws
            ZanyException;

    /*
     * 根据dictPath路径插入节点
     * @param dictPath 节点路径 例如："/pub/aaa" 注意不含根节点名(root)
     * @param ele 节点元素
     * @throws ZanyException
     */
    public void setNode(String dictPath, Element ele) throws ZanyException;
    }
